package org.example.controller;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.junit.Test;

import java.io.File;
import java.net.URL;

public class JsoupTest {

    @Test
    public void parseUrl()throws Exception{
        //使用Jsoup创建一个Document对象路径是一个url
//        参数1 url  参数2超时时间 毫秒
       Document document= Jsoup.parse(new URL("http://www.itcast.cn"),1000);
        //解析页面
        Elements elements = document.getElementsByTag("title");
        System.out.println(elements);
        System.out.println(elements.text()); //取标签内文本信息  只保留文本信息
    }

//    进行本地文件的
    @Test
    public void parseLocalUrl()throws Exception{
//        参数1 文件对象 包含文件路径  参数2 文件的编码格式
        Document document= Jsoup.parse(new File("C:\\Users\\Administrator\\Desktop\\新建文件夹\\src\\components\\IconSelector\\java测试.html"),"utf-8");
        //解析页面
        Elements elements = document.getElementsByTag("title");
        System.out.println(elements);
        System.out.println(elements.text()); //取标签内文本信息  只保留文本信息
    }


    //    进行字符串的解析
    @Test
    public void parseString()throws Exception{
        String html="<!DOCTYPE html>\n" +
                "<html lang=\"zh-CN\">\n" +
                "<head>\n" +
                "    <meta charset=\"UTF-8\">\n" +
                "    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n" +
                "    <title>Document</title>\n" +
                "</head>\n" +
                "<body>\n" +
                "    你好啊\n" +
                "</body>\n" +
                "</html>";
//        参数1 文件对象 包含文件路径  参数2 文件的编码格式
        Document document= Jsoup.parse(html);
        //解析页面
        Elements elements = document.getElementsByTag("title");
        System.out.println(elements);
        System.out.println(elements.text()); //取标签内文本信息  只保留文本信息
    }


    @Test
    public void testParseHtml()throws Exception{
        //        参数1 文件对象 包含文件路径  参数2 文件的编码格式
        Document document= Jsoup.parse(new File("C:\\Users\\Administrator\\Desktop\\新建文件夹\\src\\components\\IconSelector\\java测试.html"),"utf-8");
        //根据ID选择节点
        Element test = document.getElementById("test");
        System.out.println(test.text());
        System.out.println(test.attr("id")); //取节点的某个属性的值


        //根据Class来选择节点   有3个节点 可以通过遍历取出
        Elements clTest = document.getElementsByClass("cl_test");
        System.out.println(clTest.text());
        for (Element element:clTest){
            System.out.println(element.text());
        }
        //根据属性来选择节点
        Elements elementsByAttribute = document.getElementsByAttribute("abc");
        System.out.println(elementsByAttribute);

        //根据属性的值来选择节点 abc =t1的标签
        Elements elementsByAttributeValue = document.getElementsByAttributeValue("abc", "t1");
        System.out.println(elementsByAttributeValue);
    }

//
    @Test
    public void testSelect()throws Exception{
        //        参数1 文件对象 包含文件路径  参数2 文件的编码格式
        Document document= Jsoup.parse(new File("C:\\Users\\Administrator\\Desktop\\新建文件夹\\src\\components\\IconSelector\\java测试.html"),"utf-8");
        //使用节点名称选择
        Elements title = document.select("title");
        for (Element element : title) {
            System.out.println(element);
        }

        //根据id选择
        Elements selectID = document.select("#test");
        for (Element element : selectID) {
            System.out.println(element);
        }

        //根据class选择
        Elements selectClass = document.select(".cl_test");
        for (Element aClass : selectClass) {
            System.out.println(aClass);
        }

        //根据属性来选择
        Elements selectTitle = document.select("[abc]");
        for (Element element : selectTitle) {
            System.out.println(element);
        }
//        根据属性的值来选择
        Elements selectValue = document.select("[abc=t1]");
        for (Element element : selectValue) {
            System.out.println(element);
        }
        //复杂选择 li标签的class为li_a的里面的span  组合查询
        String text = document.select("li.li_a>span").text();
        System.out.println(text);
    }
}
